import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

public class Main {

    public static void main(String[] args) throws IOException {
        User user=new User();
        user.setStrName("lp");
        user.setNage(12);

        Map map=new HashMap();
        map.put("aa", "this is aa");
        map.put("bb", "this is bb");
        user.setMap(map);

        ObjectMapper mapper = new ObjectMapper(); //转换器
        //测试01：对象--json
        String json = mapper.writeValueAsString(user); //将对象转换成json
        System.out.println(json);

        //json转为map
        Map m = mapper.readValue(json, Map.class); //json转换成map
        System.out.println("name："+m.get("strName").getClass().getName()); //java.lang.Double
        System.out.println("age："+m.get("nage").getClass().getName()); //java.lang.Boolean
        System.out.println("map："+m.get("map").getClass().getName()); //java.util.LinkedHashMap

        //map转json
        json=mapper.writeValueAsString(m); //map转json
        System.out.println(json); //与之前格式完全相同，说明经过map转换后，信息没有丢失

        //测试04：json--对象
        User u=mapper.readValue(json, User.class); //json转java对象。经测，转成对象后，一切恢复正常
        System.out.println("name："+u.getStrName());
        System.out.println("age："+u.getNage());
        System.out.println("map："+u.getMap());
        //测试05：其他转换
        byte[] data=mapper.writeValueAsBytes(u); //对象转成二进制数组
        System.out.println(data);
        String str = new String(data); //将byte[]转为原来的String数据
        System.out.println(str);

    }
}
